package faceQuestion;

/**
 * Description： TODO
 * Author： 王多鱼
 * CreateTime： 2021/6/29 20:08
 * dif(Stirng str1,String str2)
 * 输出两个字符串中不同的字符，如果字符a在str1中出现，而没有在str2中出现，
 * 则输出-a；相反，则输出+a。字符串当中重复的字符串不输出。
 * <p>
 * abcde,bcde 输出 -a
 * <p>
 * dabc,aabcef 输出 +a,-d,+e,+f
 * <p>
 * abcdefe,aabcadef 输出 +a,+a,-e
 **/
public class DifChar {
    public static void main(String[] args) {
        System.out.println(dif("abcde", "bcde"));
        System.out.println(dif("dabc", "aabcef"));
        System.out.println(dif("abcdefe", "aabcadef"));
    }

    //把26个英文字母映射为size为26的整型数组flag，
    // 初始化为0，flag[0]对应a；若字母在str1中出现，相应flag[k]减一；
    // 若字母在str2中出现，相应flag[k]加一。
    //最后根据flag[k]大小进行打印。
    private static String dif(String str1, String str2) {
        int[] flag = new int[26];
        String s1 = str1.toLowerCase();
        String s2 = str2.toLowerCase();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s1.length(); i++)
            flag[s1.charAt(i) - 'a']--;
        for (int j = 0; j < s2.length(); j++)
            flag[s2.charAt(j) - 'a']++;
        for (int k = 0; k < flag.length; k++) {
            if (flag[k] < 0) {
                int temp = Math.abs(flag[k]);
                while (temp != 0) {
                    sb.append("-" + (char) ('a' + k) + ",");
                    temp--;
                }
            } else if (flag[k] > 0) {
                while (flag[k] != 0) {
                    sb.append("+" + (char) ('a' + k) + ",");
                    flag[k]--;
                }
            }
        }
        if (sb.lastIndexOf(",") == sb.length() - 1) {
            sb.deleteCharAt(sb.length() - 1);
        }
        return sb.toString();
    }
}
